home *** CD-ROM | disk | FTP | other *** search
/ AI Game Programming Wisdom / AIGameProgrammingWisdom.iso / SourceCode / 11 Learning / 01 Manslow / GPExample / CWorld.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-09  |  2.6 KB  |  120 lines

  1. //GPExample
  2. //Copyright John Manslow
  3. //29/09/2001
  4.  
  5. /////////////////////////////////////////////////////////////
  6. //Only when compiling under Windows
  7. #include "stdafx.h"
  8. /////////////////////////////////////////////////////////////
  9.  
  10. #include "CWorld.h"
  11. #include "assert.h"
  12.  
  13. CWorld::CWorld(const unsigned long ulNewWorldSizeX,
  14.                             const unsigned long ulNewWorldSizeY)
  15. {
  16.     unsigned long i;
  17.     ulWorldSizeX=ulNewWorldSizeX;
  18.     ulWorldSizeY=ulNewWorldSizeY;
  19.     ppnWorld=new int*[ulWorldSizeX];
  20.     for(i=0;i<ulWorldSizeX;i++)
  21.     {
  22.         ppnWorld[i]=new int[ulWorldSizeY];
  23.     }
  24.     Initialise();
  25. }
  26.  
  27. CWorld::~CWorld()
  28. {
  29.     unsigned long i;
  30.     for(i=0;i<ulWorldSizeX;i++)
  31.     {
  32.         delete []ppnWorld[i];
  33.     }
  34.     delete []ppnWorld;
  35. }
  36.  
  37. void CWorld::Initialise(void)
  38. {
  39.     unsigned long i,j;
  40.     for(i=0;i<ulWorldSizeX;i++)
  41.     {
  42.         for(j=0;j<ulWorldSizeY;j++)
  43.         {
  44.             ppnWorld[i][j]=0;
  45.         }
  46.     }
  47.     for(i=0;i<ulWorldSizeX;i++)
  48.     {
  49.         ppnWorld[i][0]=2;
  50.         ppnWorld[i][ulWorldSizeY-1]=2;
  51.     }
  52.     for(i=0;i<ulWorldSizeY;i++)
  53.     {
  54.         ppnWorld[0][i]=2;
  55.         ppnWorld[ulWorldSizeX-1][i]=2;
  56.     }
  57.     unsigned long ulx,uly;
  58.     for(i=0;i<600;i++)
  59.     {
  60.         ulx=rand()%(ulWorldSizeX-2)+1;
  61.         uly=rand()%(ulWorldSizeY-2)+1;
  62.         ppnWorld[ulx][uly]=1;
  63.     }
  64.     for(i=0;i< 400;i++)
  65.     {
  66.         ulx=rand()%(ulWorldSizeX-2)+1;
  67.         uly=rand()%(ulWorldSizeY-2)+1;
  68.         ppnWorld[ulx][uly]=3;
  69.     }
  70.     ulCharacterLocationX=rand()%(ulWorldSizeX-2)+1;
  71.     ulCharacterLocationY=rand()%(ulWorldSizeY-2)+1;
  72. }
  73.  
  74. void CWorld::Draw(CDC *pDC)
  75. {
  76.     unsigned long i,j;
  77.     CBrush *pOldBrush=(CBrush*)pDC->SelectStockObject(BLACK_BRUSH);
  78.     CPen *pOldPen=(CPen*)pDC->SelectStockObject(NULL_PEN);
  79.     CBrush *pBrush;
  80.     double dScale=400.0/double(ulWorldSizeX);
  81.     for(i=0;i<ulWorldSizeX;i++)
  82.     {
  83.         for(j=0;j<ulWorldSizeY;j++)
  84.         {
  85.             pBrush=NULL;
  86.             if(ppnWorld[i][j]==0)
  87.             {
  88.                 pBrush=new CBrush(RGB(255,255,255));
  89.             }
  90.             if(ppnWorld[i][j]==2)
  91.             {
  92.                 pBrush=new CBrush(RGB(0,0,0));
  93.             }
  94.             if(ppnWorld[i][j]==1)
  95.             {
  96.                 pBrush=new CBrush(RGB(0,200,0));
  97.             }
  98.             if(ppnWorld[i][j]==3)
  99.             {
  100.                 pBrush=new CBrush(RGB(255,0,0));
  101.             }
  102.             assert(pBrush);
  103.             pDC->SelectObject(pBrush);
  104.             pDC->Rectangle(int(i*dScale),int(j*dScale),int((i+1)*dScale+1),int((j+1)*dScale+1));
  105.             pDC->SelectObject(pOldBrush);
  106.             delete pBrush;
  107.         }
  108.     }
  109.     pBrush=new CBrush(RGB(0,0,255));
  110.     pDC->SelectObject(pBrush);
  111.     pDC->Rectangle(
  112.                                     int(ulCharacterLocationX*dScale),
  113.                                     int(ulCharacterLocationY*dScale),
  114.                                     int((ulCharacterLocationX+1)*dScale+1),
  115.                                     int((ulCharacterLocationY+1)*dScale+1));
  116.     pDC->SelectObject(pOldBrush);
  117.     pDC->SelectObject(pOldPen);
  118.     delete pBrush;
  119. }
  120.